﻿$(function () {
    function messager(s) {
        var paras = {}; //json参数
        var secondWait = 500;
        var timer;//计时器
        var showbool = true;

        function readyMsgBox() {
            paras = {
                imghref: "/images/",
                failure: "dialog_failure.png",
                remind: "icon_remind.png",
                success: "dialog_success.png"
            };
            if (s != null) {
                if (s.imghref != null) paras.imghref = s.imghref;
                if (s.failure != null) paras.failure = s.failure;
                if (s.remind != null) paras.remind = s.remind;
                if (s.success != null) paras.success = s.success;
            }
        }

        // title 弹出框标题
        // id 属性
        // func 点击确定后,所需的回调函数
        // wt 弹出框的宽度 默认宽度 350px
        this.windows = function (title, id, func, wt) {
            showbool = true;
            if (wt != "") {
                showWindows(title, id, func, wt);
            }
            else {
                showWindows(title, id, func, 350);
            }
        }
        this.dialog = function (title, id, wt, isexit) {
            if (!isexit) {
                if (wt != "") {
                    return showDialog(title, id, wt);
                }
                else {
                    return showDialog(title, id, 350);
                }
            }
            else {
                if (wt != "") {
                    return showDialogIsExit(title, id, wt);
                }
                else {
                    return showDialogIsExit(title, id, 350);
                }
            }
        }

        // msg 提示信息
        this.alert = function (msg, images) {

            if (images) {
                showBox(msg, images);
            }
            else {
                showBox(msg, paras.remind);
            }
        }
        //弹出错误提示框
        this.alertError = function (msg) {
            showBox(msg, paras.failure);
        }
        //弹出正确提示框
        this.alertSuccess = function (msg) {
            showBox(msg, paras.success);
        }

        //弹出确认提示消息并在n秒后关闭
        this.alertSuccessMsg = function (msg, sec, withOkBtn, callback) {
            var okMsgElt;
            if (withOkBtn) {
                okMsgElt = $("<div class='pop_ok_msg'><span></span></div>");
            }
            else {
                okMsgElt = $("<div class='pop_msg'><span></span></div>");
            }
            okMsgElt.find("span").text(msg);
            $("body").append(okMsgElt);
            setTimeout(function () {
                okMsgElt.remove();
                if (callback) {
                    callback();
                }
            }, sec)
        };

        // msg 提示信息
        // func 回调函数
        this.confirm = function (msg, func) {
            showConfirmBox(msg, func);
        }

        // msg 提醒信息 提醒时间 1.5秒
        // func 回调函数
        this.showMsgInfo = function (msg, func) {
            if (msg != "") {
                startTimer(function () {
                    emptyMsg(function () {
                        showSysMsg(msg, func, paras.success, 225);
                    })
                });
            }
            else {
                startTimer(function () {
                    emptyMsg(function () {
                        func();
                    })
                });
            }
            // showSysMsg(msg, func, paras.success, 225);
        }

        // 错误信息弹出框
        this.showMsgErr = function (msg, objkid) {
            showbool = false;
            showSysErrMsg(msg, paras.failure, 225);
            if (objkid && objkid != "") {
                $("#" + objkid).focus();//让错误文本框获得焦点
            }
        }

        // 等待消息弹出框
        this.showMsgWait = function (msg) {
            $.dialog({
                fixed: true,
                lock: true,
                title: false,
                content: '<div class="fadeout"><div class="fadeout_middle"><div class="shape opr-texiao-rotate"></div><div class="script">' + msg + '</div></div></div>',
                width: 160
            });
        }

        this.hideBox = function () {
            hideBox();
        }

        //--------------
        this.showReqErr = function (msg, func) {
            if (msg != undefined) {
                startTimer(function () {
                    emptyMsg(function () {
                        showBox(msg, paras.failure, function () {
                            if (func && func instanceof Function) {
                                func();
                            }
                        });
                    })
                });
            }
            else {
                startTimer(function () {
                    emptyMsg(function () {
                        showSysErrMsg("请求异常,请联系管理员", paras.failure, 350);
                    })
                });
            }
        }
        this.showReqOk = function () {
            this.showMsgInfo("操作成功");
        }
        //this.showReqVF = function () { this.showSysMsgWTime("会话过期,3秒后自动返回登录界面 -o-!", 1, 3000); }
        //显示ajax等待消息
        this.showWait = function () {
            this.showMsgWait("加载中");
        }
        //-------------

        //开始计时
        function startTimer(functionName) {
            clearTimer();
            timer = window.setTimeout(functionName, secondWait);
        }

        //停止计时
        function clearTimer() {
            if (timer != null && timer != undefined) {
                clearTimeout(timer);
            }
        }

        function emptyMsg(func) {
            hideBox();
            func();
            if (paras.callBack != null) {
                paras.callBack();
                paras.callBack = null;
            }
        }

        function hideBox() {
            if ($(".i-dialog-lock").length < 2) {
                $(".i-dialog-lock").next().remove();
                $(".i-dialog-lock").remove();
            }
            else {
                var number = $(".i-dialog-lock").length;
                var obj = $(".i-dialog-lock:eq(" + (number - 1) + ")");
                obj.next().remove();
                obj.remove();
            }
        }

        function showBox(msg, images, func) {
            var dialog = $.dialog({
                title: "提示",
                width: 350,
                fixed: true,
                lock: true,
                content: '<div class="dialog1"><span style="font-family:微软雅黑;"><img src="' + paras.imghref + images + '">' + msg + '</span></div>',
                btn: {                      //可以任意定义按钮个数
                    canle: {                     //按钮的key值，下次可用个btn方法从新设置
                        val: '确定',   //按钮显示的文本
                        type: 'orange',
                        click: function () {
                            if (func && func instanceof Function) {
                                func();
                            }
                            this.hide();

                        }
                    }
                }
            });
            dialog.$dialog.css("height", "");
        }

        //msg 表示消息
        //func 表示回调函数
        function showConfirmBox(msg, func, msg2) {
            var str = '<div class="dialog_confirm clearfix"><div class="icons"><img src="' + paras.imghref + paras.remind + '"></div><div class="infos"><p class="info1">' + msg + '</p></div></div>';
            if (msg2 != undefined) {
                str = '<div  class="dialog_confirm clearfix"><div class="icons"><img src="' + paras.imghref + paras.remind + '"></div><div class="infos"><p class="info1">' + msg + '</p><p class="info2">' + msg2 + '</p></div></div>'
            }
            $.dialog({
                width: 400,
                fixed: true,
                lock: true,
                content: str,
                btn: {                      //可以任意定义按钮个数
                    ok: {                     //按钮的key值，下次可用个btn方法从新设置
                        val: '确定',   //按钮显示的文本
                        type: 'orange',
                        click: function () {
                            this.hide();
                            func();
                        }
                    },
                    canle: {                     //按钮的key值，下次可用个btn方法从新设置
                        val: '取消',
                    }
                }
            });

        }

        function showSysMsg(msg, func, images, wt) {
            var dialog = $.dialog({
                fixed: true,
                lock: true,
                title: false,
                time: 1500,
                content: '<div showMsg class="dialog1"><span><img src="' + paras.imghref + images + '"> ' + msg + '</span></div>',//image 放在span中，宽度不限定
                //width: 225,
                hide: func
            });
            dialog.$dialog.css("width", "");//把宽度去掉
        }

        function showSysErrMsg(msg, images, wt) {
            var dialog = $.dialog({
                fixed: true,
                lock: true,
                title: false,
                time: 1500,
                content: '<div showMsg class="dialog1"><span><img src="' + paras.imghref + images + '">' + msg + '</span></div>',
                //width: 0,
                height: 60
            });
            dialog.$dialog.css("width", "");//把宽度去掉
        }

        //扩展方法，弹出错误提示框，不锁屏(样式待定 先不用)
        function showSysErrMsg_UnLock(msg, images, wt) {
            $.dialog({
                fixed: true,
                lock: false,
                title: false,
                time: 1500,
                content: '<div showMsg class="dialog1"><span><img src="' + paras.imghref + images + '">' + msg + '</span></div>',
                //width: 225,
                height: 60
            });
        }

        function showWindows(title, id, func, wt) {
            $.dialog({
                width: wt,
                fixed: true,
                lock: true,
                title: title,
                content: document.getElementById(id),
                btn: {                      //可以任意定义按钮个数
                    ok: {                     //按钮的key值，下次可用个btn方法从新设置
                        val: '确定',  //按钮显示的文本
                        type: 'orange',
                        click: function () {
                            func();
                            if (!showbool) {
                                showbool = true;
                                return false;
                            }

                        }
                    },
                    canle: {                     //按钮的key值，下次可用个btn方法从新设置
                        val: '取消',
                    }
                }
            });


        }

        function showDialog(title, id, wt) {
            return $.dialog({
                width: wt,
                fixed: true,
                lock: true,
                title: title,
                content: document.getElementById(id)
            });
        }

        function showDialogIsExit(title, id, wt) {
            return $.dialog({
                width: wt,
                fixed: true,
                lock: true,
                title: title,
                content: document.getElementById(id),
                init: function () {
                    var that = this;//this，表示当前对话框实例对象
                    $('.Cancel').click(function () {
                        that.hide();
                    });
                },
                btn: {
                    cancle: {
                        val: '关 闭'
                    }
                }
            });
        }

        readyMsgBox();
    }

    $.messager = new messager({imghref: "~/../js/theme/images/"});
});

(function (jqObj) {
    jqObj.extend(jqObj, {
        // responseBodyText 返回对象
        // funcSuc 回调函数
        msgAlert: function (responseBodyText, funcSuc) {
            try {
                var msgBox = $.messager;
                var jsObj = null;
                //如果响应报文是 字符串，则进行转换
                if (typeof (responseBodyText) == "string") {
                    try {
                        //如果转换成功，意味着传入的参数 就是 json格式字符串                       
                        jsObj = JSON.parse(responseBodyText);
                    }
                    catch (ex)//如果转换异常,意味着传入的参数 就是string格式字符串
                    {
                        if (funcSuc && funcSuc instanceof Function) {
                            if (jsObj != null)
                                msgBox.showMsgInfo(responseBodyText, function () {
                                    funcSuc(jsObj);
                                });
                            else {
                                if (responseBodyText == "top.location='/Home/Login'") {
                                    msgBox.showReqErr("登入超时，请重新登录。", function () {
                                        eval(responseBodyText);
                                    });
                                }
                                else if (responseBodyText.indexOf("程序执行异常") < 0) {
                                    if (responseBodyText.indexOf("/Home/Login") >= 0) {
                                        msgBox.showReqErr("登入超时，请重新登录。", function () {
                                            top.location = "/Home/Login";
                                        });
                                        // msgBox.showReqErr("未登录或登录失效，请重新登录。");
                                    }
                                    else {
                                        msgBox.showReqErr("系统正忙,请稍后再试...");
                                    }
                                }
                                else {
                                    msgBox.showReqErr("系统正忙,请稍后再试...");
                                }
                            }
                        }
                        else {
                            msgBox.showMsgErr();
                        }
                    }
                }
                //如果不是，说明直接传入了 js 对象，不需转换，直接赋值
                else {
                    jsObj = responseBodyText;
                }
                //如果 包含 后台定义好的规范的四个属性 (AjaxJsonMODEL)
                if (jsObj.hasOwnProperty("Statu") && jsObj.hasOwnProperty("Msg") && jsObj.hasOwnProperty("BackUrl") && jsObj.hasOwnProperty("Data")) {
                    //则统一判断 返回的状态，并作出不同的处理
                    if (jsObj.Statu == 200) {
                        //if (msgBox) {
                        if (funcSuc && funcSuc instanceof Function) {
                            msgBox.showMsgInfo(jsObj.Msg, function () {
                                funcSuc(jsObj);
                            });
                        } else {
                            msgBox.showMsgInfo(jsObj.Msg);
                        }
                    } else if (jsObj.Statu == 691) {
                        msgBox.showMsgInfo(jsObj.Msg);
                    } else {
                        if (jsObj.Msg.indexOf("Could not") >= 0) {
                            msgBox.showReqErr("系统正忙,请稍后再试...");
                        }
                        else {
                            msgBox.showReqErr(jsObj.Msg);
                        }
                    }
                }

                else {
                    if (funcSuc && funcSuc instanceof Function) {
                        msgBox.showMsgInfo(responseBodyText, function () {
                            funcSuc(jsObj);
                        });
                    } else {
                        msgBox.showMsgInfo(responseBodyText);
                    }
                }
            } catch (ex) {
                //如果失败，则意味着传入的参数 可能就是一个组普通字符串(HTML)
                //alert(responseBodyText);
            }
        }
    });
})($);

(function (jqObj) {
    jqObj.extend(jqObj, {
        msgAlert: function (responseBodyText, funcSuc) {
            try {
                var msgBox = $.messager;
                var jsObj = null;
                //如果响应报文是 字符串，则进行转换
                if (typeof (responseBodyText) == "string") {
                    try {
                        //如果转换成功，意味着传入的参数 就是 json格式字符串                       
                        jsObj = JSON.parse(responseBodyText);
                    }
                    catch (ex)//如果转换异常,意味着传入的参数 就是string格式字符串
                    {
                        if (funcSuc && funcSuc instanceof Function) {
                            if (jsObj != null)
                                msgBox.showMsgInfo(responseBodyText, function () {
                                    funcSuc(jsObj);
                                });
                            else {
                                if (responseBodyText.indexOf("程序执行异常") < 0)
                                    msgBox.showMsgInfo(responseBodyText);
                                else
                                    msgBox.showReqErr();
                            }
                        }
                        else {
                            msgBox.showMsgErr();
                        }
                    }
                }
                //如果不是，说明直接传入了 js 对象，不需转换，直接赋值
                else {
                    jsObj = responseBodyText;
                }
                //如果 包含 后台定义好的规范的四个属性 (AjaxJsonMODEL)
                if (jsObj.hasOwnProperty("Statu") && jsObj.hasOwnProperty("Msg") && jsObj.hasOwnProperty("BackUrl") && jsObj.hasOwnProperty("Data")) {
                    //则统一判断 返回的状态，并作出不同的处理
                    if (jsObj.Statu == 200) {
                        //if (msgBox) {
                        if (funcSuc && funcSuc instanceof Function) {
                            msgBox.showMsgInfo(jsObj.Msg, function () {
                                funcSuc(jsObj);
                            });
                        } else {
                            msgBox.showMsgInfo(jsObj.Msg);
                        }
                    } else if (jsObj.Statu == 691) {
                        msgBox.showMsgInfo(jsObj.Msg);
                    } else {
                        msgBox.showMsgErr(jsObj.Msg);
                    }
                }

                else {
                    if (funcSuc && funcSuc instanceof Function) {
                        msgBox.showMsgInfo(responseBodyText, function () {
                            funcSuc(jsObj);
                        });
                    } else {
                        msgBox.showMsgInfo(responseBodyText);
                    }
                }
            } catch (ex) {
                //如果失败，则意味着传入的参数 可能就是一个组普通字符串(HTML)
                alert(responseBodyText);
            }
        }
    });
})($);

(function (jQuery) {
    jQuery.extend({
        Timedisposal: function (cellval) {
            var date = new Date(parseInt(cellval.replace("/Date(", "").replace(")/", ""), 10));
            var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
            var currentDate = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
            return date.getFullYear() + "-" + month + "-" + currentDate;
        },
        TimeDateDiff: function DateDiff(sDate1, sDate2) {
            //sDate1和sDate2是2006-12-18格式  
            var aDate, oDate1, oDate2, iDays
            aDate = $.Timedisposal(sDate1).split("-");
            oDate1 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0]) //转换为12-18-2006格式              
            aDate = sDate2 != undefined ? $.Timedisposal(sDate2).split("-") : now.getDate().split("-");
            oDate2 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0]);
            iDays = parseInt(Math.abs(oDate1 - oDate2) / 1000 / 60 / 60 / 24) //把相差的毫秒数转换为天数  
            return iDays
        }

    })
})($);


